﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       MesHelperSharp
- 机器名称：       YTE
- 命名空间：       LD.Tool.MES.sharp
- 文 件 名：       MesHelperSharp
- 创建时间：       2022/7/31 19:45:25
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using LD.Host;
using LD.PLC;
using System;
namespace LD.Tool
{
    [Tool(Text = "点位监控", FrmParam = "ToolPlcMonitorFrm", ToolType = ToolEnum.PLC)]

    public class ToolPlcMonitor : BaseTool
    {
        public override OpResult Execute(TB_Tool model)
        {
            try
            {
                isSuccess = false;
                stopwatch.Start();
                if (model.Param != null)
                {
                    var param = Newtonsoft.Json.JsonConvert.DeserializeObject<PLCMonitorParam>(model.Param);

                    if (param != null && !string.IsNullOrEmpty(param.Address))
                    {
                        switch (param.DataType)
                        {
                            case "Int16":
                                ushort val16 = 0;
                                if (ushort.TryParse(param.Value, out val16))
                                {
                                    var op16 = PLCFactory.Instance.ReadInt16(param.Address);
                                    if (op16.IsSuccess)
                                    {
                                        if (op16.Content == val16)
                                        {
                                            isSuccess = true;
                                            Log(model, "收到监控信号", LogLevel.一般);
                                        }
                                    }
                                }
                                else
                                    Log(model, "数据格式错误", LogLevel.警告);

                                break;
                            case "Bool":
                                bool valbool = false;
                                if (bool.TryParse(param.Value, out valbool))
                                {
                                    var opbool = PLCFactory.Instance.ReadBool(param.Address);
                                    if (opbool.IsSuccess)
                                    {
                                        if (opbool.Content == valbool)
                                        {
                                            Log(model, "收到监控信号", LogLevel.一般);
                                            isSuccess = true;
                                        }
                                    }
                                }
                                else
                                    Log(model, "数据格式错误", LogLevel.警告);
                                break;
                            default:
                                break;
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                Log(model, ex.Message, LogLevel.严重);
            }
            finally
            {
                stopwatch.Stop();
            }
            return new OpResult() { IsSuccess = isSuccess, Message = message, ExecuteTime = stopwatch.ElapsedMilliseconds };
        }
    }
}
